home *** CD-ROM | disk | FTP | other *** search
Wrap
/******************************************** REXX **********************************/ /* */ /* Programm: UnInstall */ /* */ /* Autor: Manfred Bauer, St.-Augustinus-Str. 74, 81825 München */ /* */ /* Version: 1.0 */ /* */ /* Kurzbeschreibung: Das REXX dient dazu, um bereits installierte Software wieder */ /* zu deinstallieren. Hierzu werden Sie nach dem Objekt und ectl. */ /* dazugehörigen Dateien aus den Sstemverzeichnissen gefragt. */ /* Nachdem diese gesichert wurden, wird ein Installationsskript */ /* auf der ersten Diskette abgelegt, um diese Teile mit dem */ /* Commodore-Installer wieder installieren zu können. */ /* */ /* letzte Änderung: __.__.____ Grund: */ /* */ /************************************************************************************/ /************************************************************************************/ /* Variablen, die angepaßt werden müssen */ /************************************************************************************/ docpfad = "AMIGA_I:Docs/" /* beinhaltet den vollständigen Pfad, */ /* in dem Ihre Dokumentationen abge- */ /* legt sind */ installerpfad = "AMIGA:Utilities/" /* Pfad, wo C=-Installer ist */ Editor = "EdgePrg:Edge" /* Editor-Aufruf */ Name = "Manfred Bauer" /************************************************************************************/ /* sonstige Variablen */ /************************************************************************************/ NL = "0a"x /* Zeilenvorschub für Requester */ Orginal = " " /* beinhaltet zu archivierendes Orginal*/ OrgTyp = " " OrgPfad = " " SWahl.1 = " " /* ausgewählte Objekte aus S: */ SWahl.2 = " " SWahl.3 = " " SWahl.4 = " " SWahl.5 = " " SWahl.count = 0 /* Zähler S:-Objekte */ LIBSWahl.1 = " " /* ausgewählte Objekte aus LIBS: */ LIBSWahl.2 = " " LIBSWahl.3 = " " LIBSWahl.4 = " " LIBSWahl.5 = " " LIBSWahl.count = 0 /* Zähler LIBS:-Objekte */ PrefsWahl.1 = " " /* ausgewählte Objekte aus Prefs: */ PrefsWahl.2 = " " PrefsWahl.3 = " " PrefsWahl.4 = " " PrefsWahl.5 = " " PrefsWahl.count = 0 /* Zähler Prefs:-Objekte */ FontsWahl.1 = " " /* ausgewählte Objekte aus Fonts: */ FontsWahl.2 = " " FontsWahl.3 = " " FontsWahl.4 = " " FontsWahl.5 = " " FontsWahl.count = 0 /* Zähler Fonts:-Objekte */ ENVWahl.1 = " " /* ausgewählte Objekte aus ENV: */ ENVWahl.2 = " " ENVWahl.3 = " " ENVWahl.4 = " " ENVWahl.5 = " " ENVWahl.count = 0 /* Zähler ENV:-Objekte */ LocaleWahl.1 = " " /* ausgewählte Objekte aus Locale: */ LocaleWahl.2 = " " LocaleWahl.3 = " " LocaleWahl.4 = " " LocaleWahl.5 = " " LocaleWahl.count = 0 /* Zähler Locale:-Objekte */ DocsWahl.1 = " " /* ausgewählte Objekte aus Docs: */ DocsWahl.2 = " " DocsWahl.3 = " " DocsWahl.4 = " " DocsWahl.5 = " " DocsWahl.count = 0 /* Zähler Docs:-Objekte */ WBStartWahl.1 = " " /* ausgewählte Objekte aus WBStart: */ WBStartWahl.2 = " " WBStartWahl.3 = " " WBStartWahl.4 = " " WBStartWahl.5 = " " WBStartWahl.count = 0 /* Zähler WBStart:-Objekte */ GesBlocks = 0 /* Größe des Backups in Blocks */ disks = 0 /* Anzahl der benötigten Disketten */ /************************************************************************************/ /* Steuerung */ /************************************************************************************/ call LadeLibs /* REXX-Libraries laden */ call WahlObjekt /* Auswahl des zu archivierenden Obj. */ call WahlS /* dazugehörige Objekte wählem */ call WahlLIBS call WahlPrefs call WahlFonts call WahlENV call WahlLocale call WahlDocs call WahlWBStart call DateienSuchen /* Alle ausgewählten Dateien zusammen- */ /* suchen */ call GroesseErm /* Größe des Backups ermitteln */ GesBytes = GesBlocks*512 call Kopieren /* Kopieren der Dateien */ call ErzInstallScript /* Install-Script erzeugen */ EXIT(0) /************************************************************************************/ /* Allokierung aller benötigten REXX-Libraries */ /************************************************************************************/ LadeLibs : PROCEDURE rc = 0 rc = rc + addlib("rexxreqtools.library",-10,-30,0) rc = rc + addlib("rexxsupport.library",-20,-30,) if rc ~= 2 then do say "Benötigte Libraries konnten nicht eröffnet werden" say "*** Abbruch ***" exit end RETURN /************************************************************************************/ /* Auswahl des zu archivierenden Objekts */ /************************************************************************************/ WahlObjekt : PROCEDURE EXPOSE Orginal OrgTyp Orgpfad NL OrgWo rtezrequest("Bitte wählen Sie das Modul/Verzeichnis aus," || NL ||, "das Sie archivieren wollen" || NL || NL ||, "Achtung: Nur ein Objekt auswählen") rtfilerequest(,,"Objekt wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, orgwahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ Orginal = orgwahl.1 if Orginal = "ORGWAHL.1" then do rtezrequest("Es wurde kein Objekt ausgewählt!" || NL ||, "Sicherung wird abgebrochen") exit end erg = statef(Orginal) parse var erg OrgTyp x if OrgTyp = "DIR" then do pos = lastpos("/",Orginal) if pos = 0 then pos = lastpos(":",Orginal) OrgPfad = substr(Orginal,pos+1) OrgWo = substr(Orginal,1,pos) end RETURN /************************************************************************************/ /* Korrektur der Workbench-Farben */ /************************************************************************************/ farbe : PROCEDURE address command "sys:prefs/palette use" RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem S-Verzeichnis */ /************************************************************************************/ WahlS : PROCEDURE EXPOSE NL SWahl.1 SWahl.2 SWahl.3 SWahl.4 SWahl.5 SWahl.count rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||, "aus dem S:-Verzeichnis aus" || NL || NL ||, "Achtung: Nicht mehr als 5 Objekte" || NL ||, " Nicht die Datei USER-STARTUP," || NL ||, " diese wird später bearbeitet") rtfilerequest("SYS:S",,"Objekte in S: wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, SWahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ if SWahl.count > 5 then rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||, "Nur die ersten 5 werden gesichert") RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem LIBS-Verzeichnis */ /************************************************************************************/ WahlLIBS : PROCEDURE EXPOSE NL LIBSWahl.1 LIBSWahl.2 LIBSWahl.3 LIBSWahl.4 LIBSWahl.5 LIBSWahl.count rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||, "aus dem LIBS:-Verzeichnis aus" || NL || NL ||, "Achtung: Nicht mehr als 5 Objekte") rtfilerequest("SYS:LIBS",,"Objekte in LIBS: wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, LIBSWahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ if LIBSWahl.count > 5 then rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||, "Nur die ersten 5 werden gesichert") RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem Prefs-Verzeichnis */ /************************************************************************************/ WahlPrefs : PROCEDURE EXPOSE NL PrefsWahl.1 PrefsWahl.2 PrefsWahl.3 PrefsWahl.4 PrefsWahl.5 PrefsWahl.count rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||, "aus dem Prefs:-Verzeichnis aus" || NL || NL ||, "Achtung: Nicht mehr als 5 Objekte") rtfilerequest("SYS:Prefs",,"Objekte in Prefs: wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, PrefsWahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ if PrefsWahl.count > 5 then rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||, "Nur die ersten 5 werden gesichert") RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem Fonts-Verzeichnis */ /************************************************************************************/ WahlFonts : PROCEDURE EXPOSE NL FontsWahl.1 FontsWahl.2 FontsWahl.3 FontsWahl.4 FontsWahl.5 FontsWahl.count rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||, "aus dem Fonts:-Verzeichnis aus" || NL || NL ||, "Achtung: Nicht mehr als 5 Objekte") rtfilerequest("SYS:Fonts",,"Objekte in Fonts: wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, FontsWahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ if FontsWahl.count > 5 then rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||, "Nur die ersten 5 werden gesichert") RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem ENV-Verzeichnis */ /************************************************************************************/ WahlENV : PROCEDURE EXPOSE NL ENVWahl.1 ENVWahl.2 ENVWahl.3 ENVWahl.4 ENVWahl.5 ENVWahl.count rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||, "aus dem ENV:-Verzeichnis aus" || NL || NL ||, "Achtung: Nicht mehr als 5 Objekte") rtfilerequest("SYS:Prefs/ENV-Archive",,"Objekte in ENV: wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, ENVWahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ if ENVWahl.count > 5 then rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||, "Nur die ersten 5 werden gesichert") RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem Locale-Verzeichnis */ /************************************************************************************/ WahlLocale : PROCEDURE EXPOSE NL LocaleWahl.1 LocaleWahl.2 LocaleWahl.3 LocaleWahl.4 LocaleWahl.5 LocaleWahl.count rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||, "aus dem Locale:-Verzeichnis aus" || NL || NL ||, "Achtung: Nicht mehr als 5 Objekte") rtfilerequest("SYS:Locale",,"Objekte in Locale: wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, LocaleWahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ if LocaleWahl.count > 5 then rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||, "Nur die ersten 5 werden gesichert") RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem Docs-Verzeichnis */ /************************************************************************************/ WahlDocs : PROCEDURE EXPOSE NL docpfad DocsWahl.1 DocsWahl.2 DocsWahl.3 DocsWahl.4 DocsWahl.5 DocsWahl.count rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||, "aus dem Docs:-Verzeichnis aus" || NL || NL ||, "Achtung: Nicht mehr als 5 Objekte") rtfilerequest(docpfad,,"Objekte in Docs: wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, DocsWahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ if DocsWahl.count > 5 then rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||, "Nur die ersten 5 werden gesichert") RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem WBStart-Verzeichnis */ /************************************************************************************/ WahlWBStart : PROCEDURE EXPOSE NL WBStartWahl.1 WBStartWahl.2 WBStartWahl.3 WBStartWahl.4 WBStartWahl.5 WBStartWahl.count rtezrequest("Bitte wählen Sie noch evtl. dazugehörige Objekte" || NL ||, "aus dem WBStart:-Verzeichnis aus" || NL || NL ||, "Achtung: Nicht mehr als 5 Objekte") rtfilerequest("SYS:WBStartUp",,"Objekte in WBStart: wählen","BackUp",, "rtfi_flags = freqf_multiselect|freqf_selectdirs " ||, "rt_reqpos = reqpos_centerscr",, WBStartWahl) call farbe /* Bei mir verstellen sich immer die */ /* Farben der Workbench, hier werden */ /* sie wieder korrigiert */ if WBStartWahl.count > 5 then rtezrequest("Sie haben mehr als 5 Objekte ausgewählt!" || NL ||, "Nur die ersten 5 werden gesichert") RETURN /************************************************************************************/ /* Auswahl der zugehörigen Objekte aus dem WBStart-Verzeichnis */ /************************************************************************************/ DateienSuchen : PROCEDURE EXPOSE NL Orginal, SWahl.count SWahl.1 SWahl.2 SWahl.3 SWahl.4 SWahl.5, LIBSWahl.count LIBSWahl.1 LIBSWahl.2 LIBSWahl.3 LIBSWahl.4 LIBSWahl.5, PrefsWahl.count PrefsWahl.1 PrefsWahl.2 PrefsWahl.3 PrefsWahl.4 PrefsWahl.5, FontsWahl.count FontsWahl.1 FontsWahl.2 FontsWahl.3 FontsWahl.4 FontsWahl.5, ENVWahl.count ENVWahl.1 ENVWahl.2 ENVWahl.3 ENVWahl.4 ENVWahl.5, LocaleWahl.count LocaleWahl.1 LocaleWahl.2 LocaleWahl.3 LocaleWahl.4 LocaleWahl.5, DocsWahl.count DocsWahl.1 DocsWahl.2 DocsWahl.3 DocsWahl.4 DocsWahl.5, WBStartWahl.count WBStartWahl.1 WBStartWahl.2 WBStartWahl.3 WBStartWahl.4 WBStartWahl.5 rc = open('Console','CON:50/50/540/100/Konsole','W') writeln('Console','Zu archivierende Dateien werden ermittelt') if exists("t:uninstall") then address command "delete >nil: t:uninstall" rc = open('Work','CON:50/150/540/100/Arbeits-Fenster'.'W') writeln('Work','Bearbeite Orginal') address command 'list >>t:UnInstall "' || Orginal || '#?" files all lformat="%s%s"' writeln('Work','Bearbeite S:') do i = 1 to SWahl.count address command 'list >>t:UnInstall "' || SWahl.i || '#?" files all lformat="%s%s"' end writeln('Work','Bearbeite LIBS:') do i = 1 to LIBSWahl.count address command 'list >>t:UnInstall "' || LIBSWahl.i || '#?" files all lformat="%s%s"' end writeln('Work','Bearbeite Prefs:') do i = 1 to PrefsWahl.count address command 'list >>t:UnInstall "' || PrefsWahl.i || '#?" files all lformat="%s%s"' end writeln('Work','Bearbeite Fonts:') do i = 1 to FontsWahl.count address command 'list >>t:UnInstall "' || FontsWahl.i || '#?" files all lformat="%s%s"' end writeln('Work','Bearbeite ENV:') do i = 1 to ENVWahl.count address command 'list >>t:UnInstall "' || ENVWahl.i || '#?" files all lformat="%s%s"' end writeln('Work','Bearbeite Locale:') do i = 1 to LocaleWahl.count address command 'list >>t:UnInstall "' || LocaleWahl.i || '#?" files all lformat="%s%s"' end writeln('Work','Bearbeite Docs:') do i = 1 to DocsWahl.count address command 'list >>t:UnInstall "' || DocsWahl.i || '#?" files all lformat="%s%s"' end writeln('Work','Bearbeite WBStartUp:') do i = 1 to WBStartWahl.count address command 'list >>t:UnInstall "' || WBStartWahl.i || '#?" files all lformat="%s%s"' end rc = close('Work') rc = close('Console') RETURN /************************************************************************************/ /* Größe des Backups ermitteln */ /************************************************************************************/ GroesseErm : PROCEDURE EXPOSE GesBlocks rc = open('Console','CON:50/50/540/100/Konsole','W') rc = open('Work','CON:50/150/540/100/Arbeits-Fenster','W') writeln('Console','Größe des Backups wird ermittelt') rc = open('inp','t:UnInstall','R') rc = open('out','t:UnInstall1','W') do until(eof('inp')) eintrag = readln('inp') writeln('Work','Bearbeite Datei '|| eintrag) if eintrag ~= " " then do status = statef(eintrag) parse var status a b block c eintrag=block+1 || "#" || eintrag rc = writeln('out',eintrag) GesBlocks = GesBlocks + block + 1 end end rc = close('inp') rc = close('out') rc = close('Work') rc = close('Console') RETURN /************************************************************************************/ /* Einträge kopieren */ /************************************************************************************/ Kopieren : PROCEDURE EXPOSE NL GesBlocks disks installerpfad OrgTyp OrgPfad Orginal rc = open('Console','CON:50/50/540/100/Konsole','W') writeln('Console','Einträge werden eingelesen') anzahl = 0 rc = open('inp','t:UnInstall1','R') rc = open('Work','CON:50/150/540/100/Arbeits-Fenster','W') do until(eof('inp')) eintrag = readln('inp') if eintrag ~= ' ' then do anzahl = anzahl + 1 parse var eintrag tab.anzahl.block '#' tab.anzahl.datei writeln('Work','Bearbeite ' || tab.anzahl.datei) end end rc = close('inp') rc = close('Work') rc = close('Console') rc = open('Console','CON:50/50/540/100/Konsole','W') writeln('Console','Einträge werden sortiert') rc = open('Work','CON:50/150/540/100/Arbeits-Fenster','W') do i = 1 to anzahl-1 writeln('Work','Bearbeite Eintrag ' || i || ' von ' || anzahl) do j = i to anzahl if tab.i.block < tab.j.block then do xblock = tab.i.block xdatei = tab.i.datei tab.i.block = tab.j.block tab.i.datei = tab.j.datei tab.j.block = xblock tab.j.datei = xdatei end end end rc = close('Work') rc = close('Console') if tab.1.block > 1730 then rtezrequest('Achtung:' || NL ||, '--------' || NL ||, 'Sie müssen HD-Disketten verwenden,' || NL ||, 'da Dateien zu sichern sind, die nicht' || NL ||, 'auf DD-Disketten passen') disks = 1 rc = open('Console','CON:50/50/540/100/Konsole','W') writeln('Console','Einträge werden kopiert') writeln('Console','Gesamtgröße des Backups ' || gesblocks*512 || ' Byte') rc = open('Work','CON:50/150/540/100/Arbeits-Fenster','W') do until(GesBlocks <= 0) rc = rtezrequest("Bitte Diskette " || disks || " einlegen" || NL ||, "Daten werden überschrieben") writeln('Work','Diskette' disks 'wird formatiert') address command "format <nil: >nil: DEVICE=df0: NAME Install_" || disks || " ffs intl dircache noicons" if disks = 1 then do writeln('Work','Belege Platz für Install-Script') address command "copy " || installerpfad || "installer to Install_1:install1" writeln('Work','Kopiere Commodore-Installer') address command "copy " || installerpfad || "installer Install_1:" end address command 'info >t:diskspace df0:' rc = open(ds,"t:diskspace","R") satz = readln(ds) satz = readln(ds) satz = readln(ds) satz = readln(ds) parse var satz e1 e2 e3 diskspace e4 rc = close(ds) diskvoll = "n" do until(diskvoll="j" | Gesblocks <=0) i = 1 do while ~(i > anzahl | tab.i.block < diskspace) if tab.i.block > 3500 & tab.i.block ~= 9999999 then do rtezrequest('Die Datei ' || tab.i.datei || NL ||, '(' || tab.i.block*512 || ') konnte nicht' || NL ||, 'kopiert werden') Gesblocks = Gesblocks - tab.i.block tab.i.block = 9999999 end i = i + 1 if i > anzahl then tab.i.block = 0 end if i <= anzahl then do writeln('Work','Kopiere' tab.i.datei '(' || tab.i.block*512 || '/' || gesblocks*512 || '/' || diskspace*512 || ')') gesblocks = gesblocks - tab.i.block tab.i.block = 9999999 if substr(tab.i.datei,1,length(Orginal)) = Orginal then if OrgTyp = "DIR" & Orginal || ".info" ~= tab.i.datei then do x = substr(tab.i.datei,length(orginal)+1) ziel = OrgPfad || x pos = lastpos('/',ziel) ziel = substr(ziel,1,pos-1) end else ziel = "" else do pos = index(tab.i.datei,":") ziel = substr(tab.i.datei,pos+1) pos = lastpos("/",ziel) ziel = substr(ziel,1,pos-1) end if ~exists("df0:"||ziel) then do rest = ziel xrest = "DF0:" do while(rest ~= "") pos = index(rest,"/",2) if pos = 0 then pos = length(rest) + 1 xrest = xrest || substr(rest,1,pos-1) rest = substr(rest,pos) if ~exists(xrest) then address command "makedir """||xrest||"""" end end address command "copy """ || tab.i.datei || """ ""df0:" || ziel || """ all" address command 'info >t:diskspace df0:' rc = open(ds,"t:diskspace","R") satz = readln(ds) satz = readln(ds) satz = readln(ds) satz = readln(ds) parse var satz e1 e2 e3 diskspace e4 diskspace=diskspace - 1 rc = close(ds) end else diskvoll = "j" end disks = disks + 1 end rc=close('Console') rc=close('Work') disks = disks - 1 RETURN /************************************************************************************/ /* Install-Script erzeugen */ /************************************************************************************/ ErzInstallScript : PROCEDURE EXPOSE disks GesBytes NL OrgPfad OrgWo Name Orginal Editor rc = rtezrequest("Bitte Diskette Install_1 einlegen" || NL ||, "Installations-Script wird vorbereitet") address command 'delete >nil: Install_1:install1' address command "copy sys:utilities/Install.info Install_1:" rc = rtezrequest("Editor wird gestartet" || NL ||, "Benötigte Daten aus USER-Startup abspeichern") address command "copy s:USER-Startup t:" address command editor "t:USER-Startup" rc = rtezrequest("Editieren abgeschlossen?") rc = open(inst,"T:Install","W") writeln(inst,"(complete 0)") writeln(inst,"(set #ProgName (cat """ || OrgPfad || """))") writeln(inst,'(set user_script (cat ""))') writeln(inst,"(set SpaceNeeded " || GesBytes || ")") writeln(inst,'(set #HardDiskDefaultDest (cat "' || OrgWo ||'"))') do i = 1 to disks writeln(inst,'(set #BackDisk' || i || ' (cat "Install_' || i ||'"))') end writeln(inst,'(set #LongProgName (cat #ProgName "-BackUp"))') writeln(inst,'(set #Welcome-Pirate (cat "\nWillkommen zur " #LongProgName " Installation\n\n"') writeln(inst,'"Diese Version wurde aus einer bestehenden "') writeln(inst,'"Installation erzeugt.\n\n"') writeln(inst,'"Nicht für separaten Verkauf.\n"') writeln(inst,'"Privateigentum von ' || Name || '"))') writeln(inst,'(set #InsertDiskMsg (cat "\nBenötige die Diskette mit dem Namen\n\n"))') writeln(inst,'(set #diskhelp (cat "\n Wenn sich die richtige Diskette im Laufwerk befindet, Sie dennoch nicht weiterkommen, "') writeln(inst,'"ist der Name der Diskette falsch.\n"') writeln(inst,'" Stellen Sie sicher, daß der Diskettenname nicht mit 'copy_of_', oder Leerzeichen beginnt oder aufhört.\n\n\n"))') writeln(inst,'(set #InstallIconName (cat #BackDisk1 ":Install"))') writeln(inst,'(set #BadKick (cat #LongProgName " benötigt Workbench 3 oder höher."))') writeln(inst,'(set #DestChoicePrompt (cat "\n\n\nWo soll das Programm " #ProgName "installiert werden ?"))') writeln(inst,'(set #HardDiskFontDest (cat "SYS:Fonts"))') writeln(inst,'(set #HardDiskLibDest (cat "SYS:Libs"))') writeln(inst,'(set #HardDiskPrefsDest (cat "SYS:Prefs"))') writeln(inst,'(set #HardDiskSDest (cat "SYS:S"))') writeln(inst,'(set #HardDiskDocDest (cat "' || docpfad || '"))') writeln(inst,'(set #HardDiskLocDest (cat "SYS:Locale"))') writeln(inst,'(set #HardDiskDestChoiceMsg (cat "Wo soll das Programm\n" #ProgName " installiert werden ?"))') writeln(inst,'(set #HardDiskDestChoiceHelp (cat " Wählen Sie das Verzeichnis in das " #ProgName "installiert "') writeln(inst,'"werden soll, und klichen dann Proceed (ein neues Verzeichnis mit dem "') writeln(inst,'"Namen \"" #ProgName "\" wird angelegt und enthält " #ProgName ".)"))') writeln(inst,'(set #HardDiskDestChoiceConfirmMsg1 (cat "\nSind Sie sicher, daß " #ProgName " in \n\n\""))') writeln(inst,'(set #HardDiskDestChoiceConfirmMsg2 (cat "\"\n\n\n\n(Ein neues Verzeichnis mit dem Namen \"" #ProgName "\" wird angelegt und enthält " #ProgName ".)"))') writeln(inst,'(set #HardDiskDestChoiceConfirmHelp (cat " Klicken Sie YES um das Zielverzeichnis zu bestätigen.\n\n"') writeln(inst,'" Klicken Sie NO um das Zielverzeichnis zu ändern."))') writeln(inst,'(set #DrawerExistsMsg (cat "\nDas Verzeichnis \"" #ProgName "\" existiert bereits auf Ihrem "') writeln(inst,'"Ziellaufwerk.\n\nMöchten Sie das bestehende ersetzen oder ein "') writeln(inst,'"neues Ziel wählen?"))') writeln(inst,'(set #DrawerExistsChoice1 (cat "Ersetzen"))') writeln(inst,'(set #DrawerExistsChoice2 (cat "Neues Ziel wählen"))') writeln(inst,'(set #DrawerExistsHelp (cat "\n Sie haben ein Zielverzeichnis gewählt in dem sich bereits "') writeln(inst,'"eine Version von \"" #ProgName "\" befindet.\n\n Klicken Sie \"" ') writeln(inst,'#DrawerExistsChoice1 "\" um diese durch die vorliegende neue Version "') writeln(inst,'"von " #ProgName " zu ersetzen.\n Klicken Sie \"" #DrawerExistsChoice2 "\" "') writeln(inst,'"um ein neues Zielverzeichnis zu wählen."))') writeln(inst,'(set #NoDiskSpaceMsg (cat "Auf Ihrer Festplatte befindet sich nicht genügend freie "') writeln(inst,'"Speicherkapazität um " #ProgName " zu installieren. Sie benötigen "') writeln(inst,'"mindestens " SpaceNeeded " Bytes freien Speicher.\n\nBrechen Sie "') writeln(inst,'"diese Installation ab und löschen Sie einige Dateien auf Ihrer "') writeln(inst,'"Festplatte oder wählen Sie eine andere Partition."))') writeln(inst,'(set #HardDiskWorkingMsg (cat "Bitte warten... Programm wird installiert."))') writeln(inst,'(askdisk') writeln(inst,' (prompt #InsertDiskMsg #BackDisk1)') writeln(inst,' (help #diskhelp)') writeln(inst,' (dest #BackDisk1)') writeln(inst,')') writeln(inst,'(if (< (/ (getversion) 65536) 39)') writeln(inst,' ( abort #badkick )') writeln(inst,')') writeln(inst,'(message #Welcome-Pirate)') writeln(inst,'(complete 10)') writeln(inst,'(set MyDefault #HardDiskDefaultDest)') writeln(inst,'(set FontDest #HardDiskFontDest)') writeln(inst,'(set DriverDest #HardDiskDriverDest)') writeln(inst,'(set LibDest #HardDiskLibDest)') writeln(inst,'(set OK 0)') writeln(inst,'(until (= OK 1)') writeln(inst,' (set DestPath') writeln(inst,' (askdir') writeln(inst,' (prompt #HardDiskDestChoiceMsg)') writeln(inst,' (help #HardDiskDestChoiceHelp)') writeln(inst,' (default MyDefault)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' (if') writeln(inst,' (askbool') writeln(inst,' (prompt #HardDiskDestChoiceConfirmMsg1 DestPath #HardDiskDestChoiceConfirmMsg2)') writeln(inst,' (help #HardDiskDestChoiceConfirmHelp)') writeln(inst,' )') writeln(inst,' (set OK 1)') writeln(inst,' )') writeln(inst,' (if (= OK 1)') writeln(inst,' (if (exists (tackon DestPath #ProgName))') writeln(inst,' (') writeln(inst,' (if') writeln(inst,' (askbool') writeln(inst,' (prompt #DrawerExistsMsg)') writeln(inst,' (choices #DrawerExistsChoice1 #DrawerExistsChoice2)') writeln(inst,' (help #DrawerExistsHelp)') writeln(inst,' (default 0)') writeln(inst,' )') writeln(inst,' (') writeln(inst,' (set OK 1)') writeln(inst,' )') writeln(inst,' (') writeln(inst,' (set OK 0)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' )') writeln(inst,' )') writeln(inst,' )') writeln(inst,' (if (= OK 1)') writeln(inst,' (') writeln(inst,' (if (< (getdiskspace DestPath) SpaceNeeded)') writeln(inst,' (') writeln(inst,' (message #NoDiskSpaceMsg)') writeln(inst,' (set OK 0)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' )') writeln(inst,' )') writeln(inst,')') writeln(inst,'(set DrawerDest (tackon DestPath #ProgName))') writeln(inst,'(makedir DrawerDest)') writeln(inst,'(askdisk') writeln(inst,' (prompt #InsertDiskMsg #BackDisk1)') writeln(inst,' (help #diskhelp)') writeln(inst,' (dest #BackDisk1)') writeln(inst,')') writeln(inst,'(working') writeln(inst,' (prompt #HardDiskWorkingMsg)') writeln(inst,')') writeln(inst,'(copyfiles') writeln(inst,' (source (cat #BackDisk1 ":" #ProgName))') writeln(inst,' (dest DrawerDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,')') writeln(inst,'(if (exists (cat #BackDisk1 ":Fonts"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk1 ":Fonts"))') writeln(inst,' (dest #HardDiskFontDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,')') writeln(inst,'(if (exists (cat #BackDisk1 ":Libs"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk1 ":Libs"))') writeln(inst,' (dest #HardDiskLibDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,')') writeln(inst,'(if (exists (cat #BackDisk1 ":Prefs"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk1 ":Prefs"))') writeln(inst,' (dest #HardDiskPrefsDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,')') writeln(inst,'(if (exists (cat #BackDisk1 ":S"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk1 ":S"))') writeln(inst,' (dest #HardDiskSDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,')') writeln(inst,'(if (exists (cat #BackDisk1 ":Docs"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk1 ":Docs"))') writeln(inst,' (dest #HardDiskDocDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,')') writeln(inst,'(if (exists (cat #BackDisk1 ":Locale"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk1 ":Locale"))') writeln(inst,' (dest #HardDiskLocDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,')') if disks > 1 then do do i = 2 to disks writeln(inst,'(if (<> #BackDisk'||i||' "")') writeln(inst,' (') writeln(inst,' (askdisk') writeln(inst,' (prompt #InsertDiskMsg #BackDisk'||i||')') writeln(inst,' (help #diskhelp)') writeln(inst,' (dest #BackDisk'||i||')') writeln(inst,' )') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk'||i||' ":" #ProgName))') writeln(inst,' (dest DrawerDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,' (if (exists (cat #BackDisk'||i||' ":Fonts"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk'||i||' ":Fonts"))') writeln(inst,' (dest #HardDiskFontDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' (if (exists (cat #BackDisk'||i||' ":Libs"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk'||i||' ":Libs"))') writeln(inst,' (dest #HardDiskLibDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' (if (exists (cat #BackDisk'||i||' ":Prefs"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk'||i||' ":Prefs"))') writeln(inst,' (dest #HardDiskPrefsDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' (if (exists (cat #BackDisk'||i||' ":S"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk'||i||' ":S"))') writeln(inst,' (dest #HardDiskSDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' (if (exists (cat #BackDisk'||i||' ":Docs"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk'||i||' ":Docs"))') writeln(inst,' (dest #HardDiskDocDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' (if (exists (cat #BackDisk'||i||' ":Locale"))') writeln(inst,' (copyfiles') writeln(inst,' (source (cat #BackDisk'||i||' ":Locale"))') writeln(inst,' (dest #HardDiskLocDest)') writeln(inst,' (infos)') writeln(inst,' (all)') writeln(inst,' )') writeln(inst,' )') writeln(inst,' )') writeln(inst,')') end end rc = open(user,"T:USER-Startup","R") i = 0 do until(eof(user)) i = i + 1 userr.i = readln(user) end rc = close(user) anzahl = i-1 if anzahl > 0 then do writeln(inst,'(set user_script (cat ') do i = 1 to anzahl zeile = "" do j = 1 to length(userr.i) if substr(userr.i,j,1) = '"' then zeile = zeile || '\"' else zeile = zeile || substr(userr.i,j,1) end zeile = zeile || '\n' zeile = '"' || zeile || '"' uzeile = zeile uorgwahl = Orginal upper uzeile uorgwahl pos = index(uzeile,uorgwahl) if pos > 0 then do zeile = substr(zeile,1,pos-1) || '" DrawerDest "' || substr(zeile,pos+length(uorgwahl)) end s=writeln(inst,zeile) end writeln(inst,'))') end writeln(inst,'(if (<> user_script "")') writeln(inst,' (') writeln(inst,' (working omp "Updating S:User-Startup.")') writeln(inst,' (startup #ProgName') writeln(inst,' (prompt') writeln(inst,' "Diese Instruktionen müssen an die Datei \"S:User-Startup\" hinzugefügt"') writeln(inst,' "werden."') writeln(inst,' "Somit ist Ihr System für den Einsatz von " #Progname " konfiguriert.\n\n"') writeln(inst,' user_script') writeln(inst,' )') writeln(inst,' (help @startup-help)') writeln(inst,' (command user_script)') writeln(inst,' )') writeln(inst,' )') writeln(inst,')') writeln(inst,'(complete 100)') writeln(inst,'(exit)') rc = close(inst) address command "copy t:Install Install_1:" rc = rtezrequest(Orginal || " wurde archiviert") RETURN